什么是JSP

Java小课堂 BY武汉分院

分享人:甘乐

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

Java Server pages是一种帮助软件开发人员根据HTML、XML或者其他文档类型来创建动态WEB页面的技术, 由Sun Microsystems于1999年发布;目前最新版本是2.3,符合JSR245标准。JSP类似PHP(Personal Home Page)和ASP(Active Server Pages), 但是它使用Java语言编写。

部署和运行JSP需要一台安装servlet container的可兼容的web服务器,常用的servlet container包括Apache Tomcat、 Jetty和Resin等。

2.知识剖析

1.JSP的工作原理

JSP原理

当客户端浏览器向服务器请求一个 JSP 页面时,服务器收到该请求后,首先检查所请求的这个JSP 文件内容 ( 代码 ) 是否已经被更新,或者是否该JSP 文件创建后的第一次被访问;如果是,那么这个 JSP 文件就会在服务器端的 JSP 引擎作用下 转化为一个 Servlet 类的 Java 源代码文件。紧接着,这个 Servlet 类会在 Java 编译器的作用下被编译成一个字节码文件,并装载到JVM 解释执行。剩下的就等同于 Servlet 的处理过程了。

如果被请求的 JSP 文件内容 ( 代码 ) 没有被修改,那么它的处理过程也等同于一个 Servlet 的处理过程。 即直接由服务器检索出与之对应的 Servlet 实例来处理。

需要注意的是,JSP 文件不是在服务器启动的时候转换成 Servlet 类的。而是在被客户端访问的时候才可能发 生转换的 ( 如 JSP 文件内容没有被更新等,就不再发生 Servlet 转换 )。

就 Tomcat 而言,打开目录%Tomcat% \work\Catalina\localhost\project name \%然后会看到里面有 3个子目录: org/apache/jsp,若没有这 3 个目录,说明项目的JSP文件还没有被访问过;在jsp 目录下,会看到一些 *_jsp.java 和 *_jsp.class 文件, 这就是 JSP 文件被转换成Servlet 类的源文件和字节码文件了。

2.JSP的特点

(1)JSP 继承了Java 的“ Write once ,Run anywhere”的特点。

(2)可重用组件技术。

(3)标记化页面开发。

(4)对大型复杂 Web 应用支持良好。

3.常见问题

JSP页面有时候出现乱码,如何解决?

4.解决方案

1.没有在页面里指定使用的字符集编码,JSP页面中出现了中文字符,而默认的ISO-8859-1字符集中无中文字符,在JSP页面头部作如下声明,即可

<%@ page contentType="text/html; charset=utf-8"%>

2. 编码字符集设置不一致导致乱码

<%@ page language="java" pageEncoding="utf-8"%>指定jsp文件的存储格式。

<%@ page contentType="text/html;charset= utf-8"%>指定jsp文件的解码格式。

两处必须保持一致,且指定支持中文的字符集。

3. 数据库连接出现乱码

在数据库连接字符串中加入编码字符集:

JdbcUrl=jdbc:mysql://localhost:3306/fortask?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

5.编码实战

6.扩展思考

JSP与Servlet

JSP 本质是一个 Servlet,它的运行也需要容器的支持。在 JSP 和 Servlet 文件中都可以编写 Java 和 HTML 代码,不同的是,Servlet 虽然也可以动态的生成页面内容,但更加偏向于逻辑的控制。JSP 最终被转换成 Servlet 在 jvm 中解释执行,在 JSP 中虽然也可以编写 Java 代码,但它更加偏向于页面视图的展现。

在 MVC 架构模式中,就 JSP 和 Servlet 而言,C 通常由 Servlet 充当,V 通常由 JSP 来充当。

7.参考文献

1.JSP 应用开发技术,贾素玲 王强 张成 编著,清华大学出版社

2.维基百科——JavaServer Pages

3.博客——JSP/Servlet 工作原理

4.博客——解决JSP中文乱码问题

8.更多讨论

今天的分享就到这里啦,欢迎大家提问和探讨!